package com.springboot.personblogsystem.service;

import com.springboot.personblogsystem.common.Result;
import com.springboot.personblogsystem.common.req.AddBlogParam;
import com.springboot.personblogsystem.common.req.UpdateBlogParam;
import com.springboot.personblogsystem.common.resp.ArticleResponse;
import com.springboot.personblogsystem.model.Article;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description :
 * User: jiume
 * Date: 2025-05-14
 * Time: 17:27
 */
public interface BlogService {
    /**
     * 获取当前登录用户的文章总数
     * @param request 获取登录的用户id
     * @return 文章总数
     */
    Result<Long> getBlogCount(HttpServletRequest request);

    /**
     * 获取当前登录用户的文章分类
     * @param request 获取登录用户Id
     * @return 文章分类数量
     */
    Result<Long> getBlogSort(HttpServletRequest request);

    /**
     * 获取当前登录用户的所有文章
     * @param request 获取登录用户Id
     * @return 所有文章
     */
    Result<List<ArticleResponse>> getBlog(HttpServletRequest request);

    /**
     * 获取文章Id对应全部信息
     * @param articleId 文章Id
     * @return 详细的文章信息
     */
    Result<ArticleResponse> getBlogDetail(Long articleId);

    /**
     * 新增文章
     * @param addBlogParam 新增文章标题和内容
     * @param request 获取文章所属的用户Id
     * @return 是否新增成功
     */
    Result<Boolean> addBlog(AddBlogParam addBlogParam, HttpServletRequest request);

    /**
     * 更新文章
     * @param updateBlogParam 更新文章的标题和内容
     * @return 是否更新成功
     */
    Result<Boolean> updateBlog(UpdateBlogParam updateBlogParam);

    /**
     * 删除文章
     * @param articleId 文章Id
     * @return 是否删除成功
     */
    Result<Boolean> deleteBlog(Long articleId);
}
